# from threading import Thread
# n=0
# def add():
#     for i in range(200000):
#         global n
#         n += 1
#
# def sub():
#     for i in range(200000):
#         global n
#         n -= 1
#
# t_l=[]
# for i in range(2):
#     t1 = Thread(target=add)
#     t1.start()
#     t2=Thread(target=sub)
#     t2.start()
#     t_l.append(t1)
#     t_l.append(t2)
# for t in t_l:
#     t.join()
# print(n)
import time
from threading import Thread
n=[]
def append():
    for i in range(500000):
       n.append(1)

def pop():
    for i in range(500000):
        if not n:
            time.sleep(0.0000001)
        n.pop()
t_l=[]
for i in range(2):
    t1 = Thread(target=append)
    t1.start()
    t2=Thread(target=pop)
    t2.start()
    t3=Thread(target=pop)
    t3.start()
    t_l.append(t1)
    t_l.append(t2)
for t in t_l:
    t.join()
print(n)


# 不要操作全局变量,不要在类里操作静态变量
# += -= *= /= if while 数据不安全
# queue logging 数据安全的

# += -=  *= /= while if 数据不安全   + 和 赋值是分开的两个操作
# append pop strip数据安全 列表中的方法或者字典中的方法去操作全局变量的时候 数据安全的
# 线程之间也存在数据不安全




